Conventional form-rendering systems, such as those that render HTML forms, utilize a simple protocol to communicate between a client device on which the form is rendered and manipulated by a user, and a server that processes and provides data for rendering on the client device. More specifically, client devices in this type of environment typically send data to the server in the form of name-value pairs. The name portion of the name-value pair corresponds to a particular control in the form (such as a field in which the user might enter their name or address), and the value portion of the name-value pair corresponds to data that appears in a control.
Typically, the server has been responsible for figuring out which data has changed and then, responsively, taking the appropriate action such as modifying the form, and then returning HTML data to the client device which can then be rendered for the user.
This simple protocol leaves much to be desired and has many shortcomings not the least of which include the inability to provide or support a rich, dynamic user experience, the inability to scale in a desirable manner, and taxing server resources.